#include <stdio.h>
#include "QUEUE.h"
/**
 * File: Exercise431.c
 * --------------------------------------
 * 4.31 A letter means `put` and an asterisk means `get` in the sequence `E A S * Y * Q U E * * * S T * * * I O * N * * *`.
 * Give the sequence of values returned by the get operations when this sequence of operations is performed on an initially empty FIFO queue.
 * --------------------------------------
 * 编译：
 * make Exercise431
 * make clean
 * --------------------------------------
 * 运行
 * ./Exercise431
 */

 int main() {
    int maxN = 10;
    // 初始化队列
    QUEUEinit(10);

    // 输入序列：E A S * Y * Q U E * * * S T * * * I O * N * * *
    // 模拟操作
    
    // put 操作
    QUEUEput('E');
    QUEUEput('A');
    QUEUEput('S');
    // get 操作（打印出 'E'）
    printf("%c ", QUEUEget());

    QUEUEput('Y');
    // get 操作（打印出 'A'）
    printf("%c ", QUEUEget());
    
    QUEUEput('Q');
    QUEUEput('U');
    QUEUEput('E');
    // get 操作（打印出 'S'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'Y'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'Q'）
    printf("%c ", QUEUEget());
    
    // put 操作
    QUEUEput('S');
    QUEUEput('T');
    
    // get 操作（打印出 'U'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'E'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'S'）
    printf("%c ", QUEUEget());
        
    
    QUEUEput('I');
    QUEUEput('O');
    
    // get 操作（打印出 'T'）
    printf("%c ", QUEUEget());
    
    QUEUEput('N');
    
    // get 操作（打印出 'I'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'O'）
    printf("%c ", QUEUEget());
    // get 操作（打印出 'N'）
    printf("%c ", QUEUEget());

    printf("\n");

    return 0;
}